﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>MouseMove - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The MouseMove function moves the mouse cursor." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>MouseMove</h1>

<p>移动鼠标光标.</p>

<pre class="Syntax"><span class="func">MouseMove</span> X, Y <span class="optional">, Speed, Relative</span></pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>X, Y</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>鼠标要移动到的 x/y 坐标. 除非使用 <a href="CoordMode.htm">CoordMode</a> 来改变坐标, 否则坐标是相对于活动窗口的.</p>
  </dd>

  <dt>Speed</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>移动鼠标的速度, 介于 0(最快) 和 100(最慢) 之间.</p>
    <p class="note"><strong>注意</strong>: 速度为 0 表示瞬时移动鼠标.</p>
    <p>如果省略, 则使用默认速度(由 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a> 设置, 否则为 2).</p>
    <p>对于 <a href="SendMode.htm">SendInput/Play 模式</a>来说, 会忽略 <em>Speed</em>; 它们会瞬间移动鼠标(尽管 <a href="SetMouseDelay.htm">SetMouseDelay</a> 有一个适用于 SendPlay 的模式). 如果要在视觉上更慢地移动鼠标 -- 比如一个为观众演示的脚本 -- 请使用 <code><a href="Send.htm#Click">SendEvent {Click 100 200}</a></code> 或 <code><a href="SendMode.htm">SendMode</a> Event</code>(可选择与 <a href="BlockInput.htm">BlockInput</a> 结合).</p>
  </dd>

  <dt>Relative</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>如果省略, 则将 X 和 Y 坐标视为绝对值. 要更改此行为, 请指定下面的字母:</p>
    <p><strong>R:</strong> X 和 Y 坐标将被视为当前鼠标位置的偏移量. 换句话说, 光标将从其当前位置向右移动 X 像素(如果是负数, 则向左), 向下移动 Y 像素(如果是负数, 则向上).</p>
  </dd>

</dl>

<h2 id="Remarks">备注</h2>
<p>这个函数使用 <a href="SendMode.htm">SendMode</a> 设置的发送方法.</p>
<p>与其他模式相比, <a href="SendMode.htm">SendPlay 模式</a>能够在更多的游戏中成功地生成鼠标事件. 此外, 如果鼠标移动速度过快, 一些应用程序和游戏可能会在跟踪鼠标时出现问题. 可以使用 <em>speed</em> 参数或 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a> 来降低速度(仅在默认的 <a href="SendMode.htm">SendEvent 模式</a>下).</p>
<p>可以使用 <a href="BlockInput.htm">BlockInput</a> 函数 防止用户对鼠标的任何物理操作干扰由鼠标函数产生的模拟鼠标事件. 不过, 在 <a href="SendMode.htm">SendInput/Play</a> 模式中通常不需要这样做, 因为它们会自动将用户对鼠标的物理操作延迟到发送之后.</p>
<p>鼠标每次移动后都会有一个自动延迟(除了 <a href="SendMode.htm">SendInput 模式</a>). 使用 <a href="SetMouseDelay.htm">SetMouseDelay</a> 来改变延迟的长度.</p>
<p>下面是另一种移动鼠标光标的方法, 在某些多显示器配置中可能效果更好:</p>
<pre><a href="DllCall.htm">DllCall</a>("SetCursorPos", "int", 100, "int", 400)  <em>; 第一个数字是 X 坐标而第二个是 Y(相对于屏幕).</em></pre>
<p>相关提示, 鼠标光标可以通过<a href="DllCall.htm#ExHideCursor">隐藏光标示例</a>临时隐藏起来.</p>
<h2 id="Related">相关</h2>
<p><a href="CoordMode.htm">CoordMode</a>, <a href="SendMode.htm">SendMode</a>, <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a>, <a href="SetMouseDelay.htm">SetMouseDelay</a>, <a href="Click.htm">Click</a>, <a href="MouseClick.htm">MouseClick</a>, <a href="MouseClickDrag.htm">MouseClickDrag</a>, <a href="MouseGetPos.htm">MouseGetPos</a>, <a href="BlockInput.htm">BlockInput</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 移动鼠标光标到新位置.</p>
<pre>MouseMove 200, 100</pre>
</div>

<div class="ex" id="ExAdvanced">
<p><a class="ex_number" href="#ExAdvanced"></a> 缓慢移动鼠标光标(速度 50 vs. 2) 到距离当前位置右边 20 个像素且在下面 30 个像素的位置.</p>
<pre>MouseMove 20, 30, 50, "R"</pre>
</div>

</body>
</html>